﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EntGuayasSLA.BL;
using EntGuayasSLA.BL.Listas;
using EntGuayasSLA.BL.Listas.Criterias;
using Ext.Net;

namespace EGuayas.Web.Usuario
{
    public partial class pgJefeDep : pgBase
    {   
       
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                
                if (!X.IsAjaxRequest)
                {
                    string idPageSessionUnique = Request["idPage"];
                    string idTecnico = Request["idx1"];
                    string idUsuario = Request["idx2"];

                    this.hddIdPageSession.SetValue(idPageSessionUnique);
                    this.hddIdPersonaTmp.SetValue(idTecnico);
                    this.frmGeneral.Reset();
                    if (idUsuario == null)
                        idUsuario = GetSessionUsuario.UsuarioId;
                    if (idTecnico != null & idUsuario != null)
                    {

                        JefeDepartamental objJefeDep = JefeDepartamental.GetEditableRoot(Guid.Parse(idTecnico));
                        ValueFormPersonaJefeDep objVal = new ValueFormPersonaJefeDep(objJefeDep.Id.ToString(),Valores.PageEvento_Lectura);
                        Boolean read = ((GetSessionPage.GetSession(idPageSessionUnique) == Valores.PageEvento_Lectura) || (GetSessionPage.GetSession(idPageSessionUnique) == Valores.PageEvento_Eliminar)) ? true : false;
                                            Parroquia objParroquia = Parroquia.GetEditableRoot(Guid.Parse(objJefeDep.ParroquiaId));
                        objVal.Identificacion = objJefeDep.Identificacion;
                        objVal.Nombre=objJefeDep.Nombre;
                        objVal.Apellido=objJefeDep.Apellido;
                        objVal.Email=objJefeDep.Email;
                        objVal.Direccion=objJefeDep.Direccion;
                        objVal.Provincia = objParroquia.ProvinciaId;
                        
                        objVal.Canton=objParroquia.CantonId;
                      
                        objVal.Parroquia=objJefeDep.ParroquiaId;
                        this.hddIdPersonaTmp.SetValue(objJefeDep.PersonaId);
                        Usuarios user = Usuarios.GetEditableRoot(idUsuario);
                        objVal.IdUser = user.Id.ToString();
                        objVal.Login=user.Login;
                        objVal.password1=user.Clave;
                        objVal.password2=user.Clave;
                        this.frmGeneral.SetValues(objVal);
                        X.Js.Call("pgFn.UpdatePanelReadOnly", objJefeDep.Seccion, read);
                        X.Js.Call("AppUser.Persona.SetLocalidad", "wuc_persona", objParroquia.ProvinciaId, objParroquia.CantonId, objParroquia.Id, objJefeDep.Nacionalidad, true);
                     
                    }
  if (idPageSessionUnique != null)
                    {
                    switch (GetSessionPage.GetSession(idPageSessionUnique))
                    {
                       case Valores.PageEvento_Eliminar:
                           this.hddEvento.SetValue(Valores.PageEvento_Eliminar);
                           this.btnModificar.Hide();
                           this.btnSaveForm.Hide();
                           this.btnEliminar.Show();
                           break;
                       case Valores.PageEvento_Lectura:
                           this.hddEvento.SetValue(Valores.PageEvento_Lectura);
                           this.btnModificar.Hide();
                           this.btnSaveForm.Hide();
                           this.btnEliminar.Hide();
                           break;
                       case Valores.PageEvento_Modificar:
                           this.hddEvento.SetValue(Valores.PageEvento_Modificar);
                           this.btnModificar.Show();                                              
                           this.btnSaveForm.Hide();
                           this.btnEliminar.Hide();
                           break;
                       
                        default:

                           SetSessionPage setSession = new SetSessionPage(idPageSessionUnique, Valores.PageEvento_Nuevo);
                            this.hddEvento.SetValue(Valores.PageEvento_Nuevo);
                            this.btnSaveForm.Show();
                            this.btnModificar.Hide();
                            this.btnEliminar.Hide();
                            break;
                       
                        }
                    }
                    else
                    {
                        SetSessionPage setSession = new SetSessionPage(idPageSessionUnique, Valores.PageEvento_Nuevo);
                        this.hddEvento.SetValue(Valores.PageEvento_Nuevo);
                        this.btnSaveForm.Show();
                        this.btnModificar.Hide();
                        this.btnEliminar.Hide();

                      }
                }

            }
            catch (Exception ex)
            {
                this.btnSaveForm.Hide();
                this.btnModificar.Hide();
                this.btnEliminar.Hide();
                RegistrarLog(ex);
            }
        }
        protected void EliminarClick(object sender, DirectEventArgs e)
        {
            try
            {
                string gridJson = e.ExtraParams["prmValues"];
               
                var dataItem = JSON.Deserialize<Dictionary<string, string>>(gridJson);

                Usuarios objUsuario = Usuarios.GetEditableRoot(dataItem["IdUser"]);
                objUsuario.Delete();
                objUsuario.Save();
                
                Guid Id = Guid.Parse(dataItem["Id"]);
                Tecnico objTecnico = Tecnico.GetEditableRoot(Id);
                objTecnico.Delete();
                objTecnico.Save();
               
                btnEliminar.Disable();
                X.Js.Call("pgFn.ViewGrid", "Jefe Departamental eliminado");
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);

            }
        }
        protected void ModificarClick(object sender, DirectEventArgs e)
        {
            try
            {
                string gridJson = e.ExtraParams["prmValues"];
               
                var dataItem = JSON.Deserialize<Dictionary<string, string>>(gridJson);
                Guid Id = Guid.Parse(dataItem["Id"]);

                JefeDepartamental objJefeDep = JefeDepartamental.GetEditableRoot(Id);
                objJefeDep.Identificacion = dataItem["Identificacion"];
                objJefeDep.Nombre = dataItem["Nombre"];
                objJefeDep.Apellido = dataItem["Apellido"];
                objJefeDep.Direccion = dataItem["Direccion"];
                objJefeDep.Email = dataItem["Email"];
                objJefeDep.Seccion = dataItem["Seccion"];
                objJefeDep.ParroquiaId = dataItem["Parroquia"];
                objJefeDep.Save();
            
                Usuarios objUsuario = Usuarios.GetEditableRoot(dataItem["IdUser"]);
                objUsuario.Login = dataItem["Login"];
                objUsuario.Clave = Seguridad.Encriptar(dataItem["password1"]);            
                objUsuario.Save();
      
                btnModificar.Disable();
                X.Js.Call("pgFn.ViewGrid", "Jefe Departamental modificado");
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);

            }
        }
        protected void SaveClick(object sender, DirectEventArgs e)
        {
            try
            {

                string gridJson = e.ExtraParams["prmValues"];
                var dataItem = JSON.Deserialize<Dictionary<string, string>>(gridJson);
                var listaRoles = RolLista.GetRolLista();
                RolInfo infoRol;
                infoRol = dataItem["Seccion"]==Constantes.Auditoria ? listaRoles.FirstOrDefault(r => r.Codigo == Valores.Codigo_Rol_JefeDepartamentalAuditoria) : listaRoles.FirstOrDefault(r => r.Codigo == Valores.Codigo_Rol_JefeDepartamentalLicencimiento);

                JefeDepartamental objJefeDepar = JefeDepartamental.NewEditableRoot();
                objJefeDepar.Id = System.Guid.NewGuid();
                objJefeDepar.PersonaId = System.Guid.NewGuid().ToString();
                objJefeDepar.Identificacion = dataItem["Identificacion"];
                objJefeDepar.Nombre = dataItem["Nombre"];
                objJefeDepar.Apellido = dataItem["Apellido"];
                objJefeDepar.Direccion = dataItem["Direccion"];
                objJefeDepar.Email = dataItem["Email"];
                objJefeDepar.Seccion = dataItem["Seccion"];
                objJefeDepar.ParroquiaId = dataItem["Parroquia"];
                objJefeDepar.Save();

                Usuarios objUsuario= Usuarios.NewEditableRoot();
                objUsuario.Id = System.Guid.NewGuid();
                objUsuario.PersonaId = objJefeDepar.PersonaId;
                objUsuario.Login = dataItem["Login"];
                objUsuario.Clave = Seguridad.Encriptar(dataItem["password1"]);





                objUsuario.RolId = infoRol.Id.ToString();
                objUsuario.FechaCreacion = DateTime.Now;
                objUsuario.Estado = Valores.Codigo_Estado_Activo;
                objUsuario.Save();
                               
                btnSaveForm.Disable();
                X.Js.Call("pgFn.ViewGrid", "Jefe Departamental creado");
              
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
               
            }
        }

        #region OnComponentAdded
     
        protected void OnCuentaAdded(object sender, ComponentAddedEventArgs e)
        {
            try
            {
            string idPageSessionUnique = Request["idPage"];
            Ext.Net.FormPanel panel = (Ext.Net.FormPanel)e.Control;
            SetCustomConfigWucPage(panel, idPageSessionUnique);
            SetCustomConfig(panel, panel.Parent.ID + "idPers", Request["idx1"]);
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        protected void OnPersonaAdded(object sender, ComponentAddedEventArgs e)
        {
            try
            {
            string idPageSessionUnique = Request["idPage"];
            Ext.Net.FormPanel panel = (Ext.Net.FormPanel)e.Control;
            SetCustomConfigWucPage(panel, idPageSessionUnique);
            SetCustomConfig(panel, panel.Parent.ID + "idPers", Request["idx1"]);
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        #endregion
        
       
    }
    class ValueFormPersonaJefeDep
    {
        public string Evento { get; set; }
        public string IdUser { get; set; }
        public string Id { get; set; }
        public string Identificacion { get; set; }
        public string Nombre { get;  set; }
        public string Apellido { get;  set; }
        public string Email { get;  set; }
        public string Direccion { get;  set; }
        public string Provincia { get;  set; }
        public object[] _Provincia_state { get; set; }
        public string Canton { get;  set; }
        public string _Canton_state { get;  set; }
        public string Parroquia { get;  set; }
        public object[] _Parroquia_state { get; set; }
        public object[] _cbxTipoPersona_state { get; set; }
        public string Seccion { get;  set; }
      
        public string Login { get;  set; }
        public string password1 { get;  set; }
        public string password2 { get; set; }


        public ValueFormPersonaJefeDep(string _id, string _evt)
        {
          
            Id = _id;
            Evento = _evt;
        }

    }
}